#include "defs.h"
#include "param.h"

void interpolar(vPunto& puntos, vSpline& spline, int n);
double derivada(Punto& click, vSpline& spline_x, vSpline& spline_y, double punto, int n);
double distancia(Punto& click, vSpline& spline_x, vSpline& spline_y, double punto, int n);
int ubicacion(Punto& nuevo, vPunto& puntos);
void agregar_punto(Punto& nuevo, int posicion, vPunto& puntos, vPunto& nuevosPuntos);
double mas_Proximo(long int cant_puntos, vSpline& spline_x, vSpline& spline_y, Punto& click, Punto& proximo, int n);
double biseccion(double a, double b, Punto& click, vSpline& spline_x, vSpline& spline_y, int n);
double multi_biseccion(long int cant_puntos, vdouble& t_partes, vdouble& mejores_t, vSpline& spline_x, vSpline& spline_y, Punto& click, int n);
double multi_regula_falsi(long int cant_puntos, vdouble& t_partes, vdouble& mejores_t, vSpline& spline_x, vSpline& spline_y, Punto& click, int n);
double newton(double t_0, Punto& click, vSpline& spline_x, vSpline& spline_y, int n);
double regula_falsi(double t_0, double t_1, Punto& click, vSpline& spline_x, vSpline& spline_y, int n);
void graficar(long int cant_puntos, string nombre_fig, string caption, vSpline& spline_x, vSpline spline_y, int n);
void graficar_multi(long int cant_puntos, string nombre_fig, string caption, vSpline& spline_x_1, vSpline spline_y_1, vSpline& spline_x_2, vSpline spline_y_2, vSpline& spline_x_3, vSpline spline_y_3, int n);
